package pe.gob.sunarp.publicidad.repositorio;

import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import pe.gob.sunarp.entidad.OficRegistral;
import pe.gob.sunarp.entidad.RegisPublico;
import pe.gob.sunarp.entidad.TmDocIden;
import pe.gob.sunarp.publicidad.beanconsulta.ActosBean;

import pe.gob.sunarp.publicidad.beanconsulta.DetalleBusquedaTituloBean;
import pe.gob.sunarp.publicidad.beanconsulta.OficinaRegistralBean;
import pe.gob.sunarp.publicidad.beanconsulta.ParticipantePNBean;
import pe.gob.sunarp.publicidad.beanconsulta.PartidasBean;
import pe.gob.sunarp.publicidad.beanconsulta.ParticipantePJBean;
import pe.gob.sunarp.publicidad.beanconsulta.SolicitudBean;
import pe.gob.sunarp.publicidad.beanconsulta.TituloNumeroBean;
import pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePJBean;
import pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePNBean;
import pe.gob.sunarp.publicidad.beanconsulta.TituloPresentantePJBean;
import pe.gob.sunarp.publicidad.beanconsulta.TituloPresentatePNBean;
import pe.gob.sunarp.publicidad.beanconsulta.TmDetalleTituloBean;

@Repository("tituloRepositorio")
public class HibernateTituloRepositorio implements TituloRepositorio {

	private static Logger log = Logger
			.getLogger(HibernateTituloRepositorio.class.getName());

	private SessionFactory sessionFactory;

	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	@Override
	public List<OficRegistral> buscarOficinas() {

		Session session = sessionFactory.getCurrentSession();
		List<OficRegistral> lista = session.createQuery("from OficRegistral").list();
		return lista;
	}

	@Override
	public List<TmDocIden> buscarDocumentoPN() {

		Session session = sessionFactory.getCurrentSession();
		List<TmDocIden> lista = session.createQuery("FROM TmDocIden WHERE tipoPer!='J' AND estado='1'").list();
		return lista;
	}

	@Override
	public List<TmDocIden> buscarDocumentoPJ() {
		
		Session session = sessionFactory.getCurrentSession();
		List<TmDocIden> lista = session.createQuery("FROM TmDocIden WHERE tipoPer!='N' AND estado='1'").list();
		return lista;
	}
	
	@Override
	public List<TmDetalleTituloBean> estadoAnterior(long refTitu, long nsDetalle) {
	
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TmDetalleTituloBean( ");
		hql.append("  tet.estadoTituloId ,tet.estado ) from TmEstadoTitulo tet, DetalleTitulo dt ");
		hql.append(" where  dt.tmEstadoTitulo.estadoTituloId= tet.estadoTituloId and dt.id.refnumTitu=:refTitu and dt.id.nsDetalle=:nsDetalle ");

		String rhql = hql.toString();

		Query query = session.createQuery(rhql);
		query.setParameter("refTitu", refTitu);
		query.setParameter("nsDetalle", nsDetalle);

		List<TmDetalleTituloBean> lista = query.list();
		return lista;

	}
	
	@Override
	public List<ActosBean> buscarActos(String ptitulo, String pano,
			String pzona, String poficina) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ActosBean(");
		hql.append(" ta.codActo,");
		hql.append(" ta.descripcion ) ");
		hql.append(" FROM ");
		hql.append(" Titulo t,");
		hql.append(" ActosTitulo at,");
		hql.append(" TmActo ta");
		hql.append(" WHERE");
		hql.append(" t.refnumTitu= at.id.refnumTitu");
		hql.append(" and ta.codActo= at.tmActo.codActo");
		hql.append(" and t.numTitu=:titulo");
		hql.append(" and t.anoTitu=:ano");
		hql.append(" and t.oficRegistral.id.oficRegId=:oficina");
		hql.append(" and t.oficRegistral.id.regPubId=:zona");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", poficina);
		query.setParameter("zona", pzona);
		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		List<ActosBean> lista = query.list();
		return lista;

	}

	// danny

	@Override
	public List<DetalleBusquedaTituloBean> buscarDetalleTitulo(String ptitulo,
			String pano, String pzona, String poficina, String parea) {

		Session session = sessionFactory.getCurrentSession();

		StringBuilder hql = new StringBuilder();
		hql.append("  SELECT DISTINCT  NEW pe.gob.sunarp.publicidad.beanconsulta.DetalleBusquedaTituloBean( ");
		hql.append("  dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append("  dt.puCtrl,");
		hql.append("  dt.esTituCali, ");
		hql.append("  dt.montoLiq, ");
		hql.append("  t.numTitu,");
		hql.append("  t.anoTitu, ");
		hql.append("  t.refnumTitu, ");
		hql.append("  t.fecVenc, ");
		hql.append("  t.tsPresent, ");
		hql.append("  t.tsUltSync,");
		hql.append("  t.oficRegistral.id.regPubId, ");
		hql.append("  t.oficRegistral.id.oficRegId, ");
		hql.append("  t.oficRegistral.nombre, ");
		hql.append("  t.oficRegistral.regisPublico.nombre, ");
		hql.append("  p.apePat, ");
		hql.append("  p.apeMat, ");
		hql.append("  p.nombres, ");
		hql.append("  p.tiDocu, ");
		hql.append("  p.nuDoc, ");
		hql.append("  p.curPres, ");
		hql.append("  p.tipoPer, ");
		hql.append("  p.nombreInst, ");
		hql.append("  tet.estado, ");
		hql.append("  tet.mensaje, ");
		hql.append("  tar.nombre, ");
		hql.append("  tar.areaRegId,");
		hql.append("  ta.descripcion, ");
		hql.append("  tis.nombreInst ) ");

		hql.append("  FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis LEFT join t.actosTitulos at  LEFT join at.tmActo ta , DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append("  WHERE ");
		hql.append("  dt.id.refnumTitu= t.refnumTitu ");
		hql.append("  AND dt.fgActivo='1' ");
		hql.append("  AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId");
		hql.append("  AND tar.estado='1' ");
		hql.append("  AND tar.areaRegId= t.tmAreaRegistral.areaRegId");
		hql.append("  AND t.numTitu=:titulo ");
		hql.append("  AND t.anoTitu=:ano ");
		hql.append("  AND t.oficRegistral.id.regPubId=:zona ");
		hql.append("  AND t.oficRegistral.id.oficRegId=:oficina ");
		hql.append("  AND t.tmAreaRegistral.areaRegId=:area ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		query.setParameter("zona", pzona);
		query.setParameter("oficina", poficina);
		query.setParameter("area", parea);

		List<DetalleBusquedaTituloBean> lista = query.list();
		return lista;
	}

	@Override
	public List<DetalleBusquedaTituloBean> buscarDetalleTituloRMC(
			String ptitulo, String pano, String parea) {

		Session session = sessionFactory.getCurrentSession();

		StringBuilder hql = new StringBuilder();
		hql.append("  SELECT DISTINCT  NEW pe.gob.sunarp.publicidad.beanconsulta.DetalleBusquedaTituloBean( ");
		hql.append("  dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append("  dt.puCtrl,");
		hql.append("  dt.esTituCali, ");
		hql.append("  dt.montoLiq, ");
		hql.append("  t.numTitu,");
		hql.append("  t.anoTitu, ");
		hql.append("  t.refnumTitu, ");
		hql.append("  t.fecVenc, ");
		hql.append("  t.tsPresent, ");
		hql.append("  t.tsUltSync,");
		hql.append("  t.oficRegistral.id.regPubId, ");
		hql.append("  t.oficRegistral.id.oficRegId, ");
		hql.append("  t.oficRegistral.nombre, ");
		hql.append("  t.oficRegistral.regisPublico.nombre, ");
		hql.append("  p.apePat, ");
		hql.append("  p.apeMat, ");
		hql.append("  p.nombres, ");
		hql.append("  p.tiDocu, ");
		hql.append("  p.nuDoc, ");
		hql.append("  p.curPres, ");
		hql.append("  p.tipoPer, ");
		hql.append("  p.nombreInst, ");
		hql.append("  tet.estado, ");
		hql.append("  tet.mensaje, ");
		hql.append("  tar.nombre, ");
		hql.append("  tar.areaRegId,");
		hql.append("  ta.descripcion, ");
		hql.append("  tis.nombreInst ) ");

		hql.append("  FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis LEFT join t.actosTitulos at  LEFT join at.tmActo ta , DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append("  WHERE ");
		hql.append("  dt.id.refnumTitu= t.refnumTitu ");
		hql.append("  AND dt.fgActivo='1' ");
		hql.append("  AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId");
		hql.append("  AND tar.estado='1' ");
		hql.append("  AND tar.areaRegId= t.tmAreaRegistral.areaRegId");
		hql.append("  AND t.numTitu=:titulo ");
		hql.append("  AND t.anoTitu=:ano ");
		/*
		 * hql.append("  AND t.oficRegistral.id.regPubId=:zona ");
		 * hql.append("  AND t.oficRegistral.id.oficRegId=:oficina ");
		 */
		hql.append("  AND t.tmAreaRegistral.areaRegId=:area ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		/*
		 * query.setParameter("zona", pzona); query.setParameter("oficina",
		 * poficina);
		 */
		query.setParameter("area", parea);

		List<DetalleBusquedaTituloBean> lista = query.list();
		return lista;
	}

	@Override
	public List<TituloNumeroBean> buscarPorNumero(String ptitulo, String pano,
			String pzona) {

		Session session = sessionFactory.getCurrentSession();

		StringBuilder hql = new StringBuilder();
		hql.append(" SELECT ");
		hql.append(" NEW pe.gob.sunarp.publicidad.beanconsulta.TituloNumeroBean( ");
		// hql.append(" dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append(" tet.estadoTituloId, ");

		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		hql.append(" dt.montoLiq, ");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu, ");
		/* hql.append(" t.oficRegistral.nombre, "); */
		hql.append(" t.refnumTitu, ");
		hql.append(" t.fecVenc, ");
		hql.append(" t.tsPresent, ");
		hql.append(" t.oficRegistral.id.regPubId, ");
		hql.append(" t.oficRegistral.id.oficRegId, ");
		hql.append(" t.oficRegistral.nombre, ");
		hql.append(" t.oficRegistral.regisPublico.nombre, ");
		hql.append(" p.apePat, ");
		hql.append(" p.apeMat, ");
		hql.append(" p.nombres, ");
		// danny
		hql.append(" p.tiDocu, ");

		//

		hql.append(" p.nuDoc, ");
		hql.append(" p.curPres, ");
		hql.append(" p.tipoPer, ");
		hql.append(" p.nombreInst,");
		hql.append(" tet.estado, ");
		hql.append(" tet.mensaje, ");
		hql.append(" tar.nombre, ");
		hql.append(" tar.areaRegId, ");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis, DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append(" WHERE ");
		hql.append(" dt.id.refnumTitu= t.refnumTitu ");
		hql.append(" AND dt.fgActivo='1' ");
		hql.append(" AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId ");
		hql.append(" AND tar.estado='1' ");
		hql.append(" AND tar.areaRegId= t.tmAreaRegistral.areaRegId ");
		hql.append(" AND t.numTitu=:titulo ");
		hql.append(" AND t.anoTitu=:ano ");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		query.setParameter("zona", pzona);

		List<TituloNumeroBean> lista = query.list();

		return lista;
	}

	@Override
	public List<TituloNumeroBean> buscarPorNumeroRMC(String ptitulo, String pano) {

		Session session = sessionFactory.getCurrentSession();

		StringBuilder hql = new StringBuilder();
		hql.append(" SELECT ");
		hql.append(" NEW pe.gob.sunarp.publicidad.beanconsulta.TituloNumeroBean( ");
		// hql.append(" dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append(" tet.estadoTituloId, ");
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		hql.append(" dt.montoLiq, ");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu, ");
		/* hql.append(" t.oficRegistral.nombre, "); */
		hql.append(" t.refnumTitu, ");
		hql.append(" t.fecVenc, ");
		hql.append(" t.tsPresent, ");
		hql.append(" t.oficRegistral.id.regPubId, ");
		hql.append(" t.oficRegistral.id.oficRegId, ");
		hql.append(" t.oficRegistral.nombre, ");
		hql.append(" t.oficRegistral.regisPublico.nombre, ");
		hql.append(" p.apePat, ");
		hql.append(" p.apeMat, ");
		hql.append(" p.nombres, ");

		// danny
		hql.append(" p.tiDocu, ");

		//

		hql.append(" p.nuDoc, ");
		hql.append(" p.curPres, ");
		hql.append(" p.tipoPer, ");
		hql.append(" p.nombreInst,");
		hql.append(" tet.estado, ");
		hql.append(" tet.mensaje, ");
		hql.append(" tar.nombre, ");
		hql.append(" tar.areaRegId, ");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis, DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append(" WHERE ");
		hql.append(" dt.id.refnumTitu= t.refnumTitu ");
		hql.append(" AND dt.fgActivo='1' ");
		hql.append(" AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId ");
		hql.append(" AND tar.estado='1' ");
		hql.append(" AND tar.areaRegId= t.tmAreaRegistral.areaRegId ");
		hql.append(" AND t.numTitu=:titulo ");
		hql.append(" AND t.anoTitu=:ano ");
		// hql.append(" and t.oficRegistral.id.regPubId=:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);

		List<TituloNumeroBean> lista = query.list();

		return lista;
	}
	
	@Override
	public List<ActosBean> buscarActosXTitulo(String ptitulo, String pano,
			String pzona, String poficina) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ActosBean(  ");
		hql.append(" ta.codActo,");
		hql.append(" ta.descripcion ) ");
		hql.append(" FROM ");
		hql.append(" Titulo t,");
		hql.append(" ActosTitulo at,");
		hql.append(" TmActo ta");
		hql.append(" WHERE");
		hql.append(" t.refnumTitu= at.id.refnumTitu");
		hql.append(" and ta.codActo= at.tmActo.codActo");
		hql.append(" and t.numTitu=:titulo");
		hql.append(" and t.anoTitu=:ano");
		hql.append(" and t.oficRegistral.id.oficRegId=:oficina");
		hql.append(" and t.oficRegistral.id.regPubId=:zona");
		//blanca
		hql.append(" order by at.id.nsActoTitu ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", poficina);
		query.setParameter("zona", pzona);
		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		List<ActosBean> lista = query.list();
		return lista;

	}

	@Override
	public List<ActosBean> buscarActosXTituloRMC(String ptitulo, String pano) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ActosBean(  ");
		hql.append(" ta.codActo,");
		hql.append(" ta.descripcion ) ");
		hql.append(" FROM ");
		hql.append(" Titulo t,");
		hql.append(" ActosTitulo at,");
		hql.append(" TmActo ta");
		hql.append(" WHERE");
		hql.append(" t.refnumTitu= at.id.refnumTitu");
		hql.append(" and ta.codActo= at.tmActo.codActo");
		hql.append(" and t.numTitu=:titulo");
		hql.append(" and t.anoTitu=:ano");
		/*
		 * hql.append(" and t.oficRegistral.id.oficRegId=:oficina");
		 * hql.append(" and t.oficRegistral.id.regPubId=:zona");
		 */
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		List<ActosBean> lista = query.list();
		return lista;

	}

	@Override
	public List<PartidasBean> buscarPartidaXtitulo(String ptitulo, String pano,
			String pzona, String poficina,String area) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		hql.append(" SELECT DISTINCT");
		hql.append(" NEW pe.gob.sunarp.publicidad.beanconsulta.PartidasBean( ");
		hql.append(" p.numPartida ) ");
		hql.append(" FROM Partida p, Asiento a ");
		hql.append(" where p.refnumPart= a.partida.refnumPart ");
		hql.append(" and p.oficRegistral.id.oficRegId=:oficina ");
		hql.append(" and p.oficRegistral.id.regPubId=:zona ");
		//blanca
		hql.append(" and p.tmAreaRegistral.areaRegId=:area");
		
		
		///
		
		hql.append(" and a.numTitu=:titulo ");
		hql.append(" and a.aaTitu=:ano ");
		String rhql = hql.toString();

		Query query = session.createQuery(rhql);
		query.setParameter("oficina", poficina);
		query.setParameter("zona", pzona);
		//
		query.setParameter("area", area);
		
		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);

		List<PartidasBean> lista = query.list();
		return lista;

	}

	@Override
	public List<PartidasBean> buscarPartidaXtituloRMC(String ptitulo,
			String pano) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		hql.append(" SELECT ");
		hql.append(" NEW pe.gob.sunarp.publicidad.beanconsulta.PartidasBean( ");
		hql.append(" p.numPartida ) ");
		hql.append(" FROM Partida p, Asiento a ");
		hql.append(" where p.refnumPart= a.partida.refnumPart ");
		/*
		 * hql.append(" and p.oficRegistral.id.oficRegId=:oficina ");
		 * hql.append(" and p.oficRegistral.id.regPubId=:zona ");
		 */
		hql.append(" and a.numTitu=:titulo ");
		hql.append(" and a.aaTitu=:ano ");
		String rhql = hql.toString();

		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);

		List<PartidasBean> lista = query.list();
		return lista;

	}

	@Override
	public List<RegisPublico> buscarZonas() {
		Session session = sessionFactory.getCurrentSession();
		Query query = session.createQuery("from  RegisPublico ");

		List<RegisPublico> lista = query.list();
		return lista;

	}

	@Override
	public List<TituloPresentatePNBean> buscarTituloPresentantePN(
			String apePat, String apeMat, String nombres, String zona) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloPresentatePNBean( ");
		hql.append(" tar.areaRegId,");
		hql.append(" tar.nombre,");
		hql.append(" tar.descripcion,");
		hql.append(" tar.estado,");
		hql.append(" tar.prefijo,");
		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" t.oficRegistral.id.regPubId,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.nombre, ");
		hql.append(" t.oficRegistral.regisPublico.nombre, ");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" tet.estado,");

		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		hql.append(" tet.mensaje,");
		hql.append(" p.id.aaHojaPres,");
		hql.append(" p.id.numHojaPres,");
		hql.append(" p.id.presOficRegId,");
		hql.append(" p.id.presRegPubId,");
		hql.append(" p.curPres,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		hql.append(" p.tsPres )");

		hql.append(" from");

		hql.append(" Presentante p,");
		hql.append(" Titulo t,");
		hql.append(" DetalleTitulo dt, ");
		hql.append(" TmAreaRegistral tar, ");
		hql.append(" TmEstadoTitulo tet ");
		hql.append(" where ");

		hql.append(" p.id.aaHojaPres= t.aaHojaPres ");
		hql.append(" and p.id.numHojaPres= t.numHojaPres ");
		hql.append(" and p.id.presOficRegId= t.presOficRegId ");
		hql.append(" and p.id.presRegPubId= t.presRegPubId ");
		hql.append(" and t.refnumTitu= dt.id.refnumTitu ");
		hql.append(" and p.id.sistemaId= t.sistemaId ");
		hql.append(" and dt.fgActivo='1' ");
		hql.append(" and t.tmAreaRegistral.areaRegId= tar.areaRegId ");
		hql.append(" and tar.estado='1' ");
		hql.append(" and tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId ");
		hql.append(" and t.oficRegistral.id.regPubId=:zona ");

		hql.append(" and p.apePat like :apellidoPat");

		hql.append(" and p.apeMat like :apellidoMat");

		hql.append(" and p.nombres like :nombres ");

		String rhql = hql.toString();

		Query query = session.createQuery(rhql);

		apePat = apePat.trim() + '%';
		query.setParameter("apellidoPat", apePat);

		apeMat = apeMat.trim() + '%';
		query.setParameter("apellidoMat", apeMat);

		nombres = nombres.trim() + '%';
		query.setParameter("nombres", nombres);

		query.setParameter("zona", zona);

		List<TituloPresentatePNBean> lista = query.list();
		return lista;

		// @DANNY:inicio

		// fin

	}

	@Override
	public List<TituloPresentatePNBean> buscarTituloPresentanteDocPN(
			String tipoDoc, String numeroDoc, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloPresentatePNBean( ");
		hql.append(" tar.areaRegId,");
		hql.append(" tar.nombre,");
		hql.append(" tar.descripcion,");
		hql.append(" tar.estado,");
		hql.append(" tar.prefijo,");
		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" t.oficRegistral.id.regPubId,");
		hql.append(" t.oficRegistral.id.oficRegId,");

		hql.append(" t.oficRegistral.nombre, ");
		hql.append(" t.oficRegistral.regisPublico.nombre, ");

		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" tet.estado,");
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//
		hql.append(" tet.mensaje,");
		hql.append(" p.id.aaHojaPres,");
		hql.append(" p.id.numHojaPres,");
		hql.append(" p.id.presOficRegId,");
		hql.append(" p.id.presRegPubId,");
		hql.append(" p.curPres,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		hql.append(" p.tsPres )");
		hql.append(" from");

		hql.append(" Presentante p,");
		hql.append(" Titulo t,");
		hql.append(" DetalleTitulo dt, ");
		hql.append(" TmAreaRegistral tar, ");
		hql.append(" TmEstadoTitulo tet ");
		hql.append(" where ");

		hql.append(" p.id.aaHojaPres= t.aaHojaPres ");
		hql.append(" and p.id.numHojaPres= t.numHojaPres ");
		hql.append(" and p.id.presOficRegId= t.presOficRegId ");
		hql.append(" and p.id.presRegPubId= t.presRegPubId ");
		hql.append(" and t.refnumTitu= dt.id.refnumTitu ");
		hql.append(" and p.id.sistemaId= t.sistemaId ");
		hql.append(" and dt.fgActivo='1' ");
		hql.append(" and t.tmAreaRegistral.areaRegId= tar.areaRegId ");
		hql.append(" and tar.estado='1' ");
		hql.append(" and tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId ");
		hql.append(" and p.tiDocu =:tipoDoc");
		hql.append(" and p.nuDoc=:numeroDoc");
		hql.append(" and p.id.presRegPubId=:zona");

		/* hql.append(" and t.oficRegistral.id.regPubId=:zona "); */

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("tipoDoc", tipoDoc);
		query.setParameter("numeroDoc", numeroDoc);
		query.setParameter("zona", zona);

		List<TituloPresentatePNBean> lista = query.list();
		return lista;
	}

	@Override
	public List<TituloPresentantePJBean> buscarTituloPresentanteRZ(
			String razonSocial, String zona) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloPresentantePJBean(  ");
		hql.append(" t.tmAreaRegistral.areaRegId, ");
		hql.append(" t.tmAreaRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" t.oficRegistral.id.regPubId,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" p.nombreInst,");
		// danny:inciio
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		// fin
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//
		hql.append(" t.oficRegistral.nombre,");
		hql.append(" dt.tmEstadoTitulo.estadoTituloId,");
		// danny
		hql.append(" dt.tmEstadoTitulo.mensaje,");
		//

		hql.append(" dt.tmEstadoTitulo.estado )");

		hql.append(" FROM");
		hql.append(" Titulo t, ");
		hql.append(" Presentante p,");
		hql.append(" DetalleTitulo dt ");
		hql.append(" WHERE ");
		hql.append(" p.id.aaHojaPres= t.aaHojaPres");
		hql.append(" and p.id.numHojaPres= t.numHojaPres");
		hql.append(" and p.id.presOficRegId= t.presOficRegId");
		hql.append(" and p.id.presRegPubId= t.presRegPubId");
		hql.append(" and p.id.sistemaId= t.sistemaId");
		hql.append(" and t.refnumTitu= dt.id.refnumTitu");
		hql.append(" and dt.fgActivo= '1'");
		hql.append(" and t.tmAreaRegistral.estado= '1'");
		hql.append(" and p.nombreInst like :razon ");
		hql.append(" and t.oficRegistral.id.regPubId =:zona ");

		// 'VELA ARMAS GILB%'
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		razonSocial = razonSocial.trim() + "%";
		query.setParameter("razon", razonSocial);
		query.setParameter("zona", zona);
		List<TituloPresentantePJBean> lista = query.list();
		// TODO Auto-generated method stub
		return lista;
	}

	@Override
	public List<TituloPresentantePJBean> buscarTituloPresentanteSG(
			String siglas, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloPresentantePJBean( ");
		hql.append("  t.tmAreaRegistral.areaRegId,");
		hql.append("  t.tmAreaRegistral.nombre,");
		hql.append("  t.oficRegistral.regisPublico.nombre,");
		hql.append("  t.refnumTitu,");
		hql.append("  t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" t.oficRegistral.id.regPubId,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" p.nombreInst,");

		// danny:inciio
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		// fin
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		hql.append(" t.oficRegistral.nombre,");
		hql.append(" dt.tmEstadoTitulo.estadoTituloId,");
		// danny
		hql.append(" dt.tmEstadoTitulo.mensaje,");
		//

		hql.append(" dt.tmEstadoTitulo.estado ) ");

		hql.append(" FROM ");
		hql.append(" Titulo t,");
		hql.append(" Presentante p,");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmInstSir tis");
		hql.append(" WHERE ");
		hql.append(" p.id.aaHojaPres= t.aaHojaPres");
		hql.append(" and p.id.numHojaPres= t.numHojaPres");
		hql.append(" and p.id.presOficRegId= t.presOficRegId");
		hql.append(" and p.id.presRegPubId= t.presRegPubId");
		hql.append(" and p.id.sistemaId= t.sistemaId");
		hql.append(" and p.id.presOficRegId= tis.id.oficRegId");
		hql.append(" and p.id.presRegPubId= tis.id.regPubId");
		hql.append(" and p.curPres= tis.id.curPres");
		hql.append(" and t.refnumTitu= dt.id.refnumTitu");
		hql.append(" and dt.fgActivo= '1'");

		hql.append(" and t.tmAreaRegistral.estado= '1'");
		hql.append(" and tis.siglas like :siglas ");
		hql.append(" and t.oficRegistral.id.regPubId =:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		siglas = siglas.trim() + "%";
		query.setParameter("siglas", siglas);
		query.setParameter("zona", zona);
		List<TituloPresentantePJBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<TituloPresentantePJBean> buscarTituloPresentanteDocPJ(
			String tipDoc, String numDoc, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloPresentantePJBean(  ");
		hql.append(" t.tmAreaRegistral.areaRegId,");
		hql.append(" t.tmAreaRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" t.oficRegistral.id.regPubId,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc, ");
		hql.append(" pre.nombreInst,");

		// danny:inciio
		hql.append(" pre.tiDocu,");
		hql.append(" pre.nuDoc,");
		// fin
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		hql.append(" t.oficRegistral.nombre,");
		hql.append(" dt.tmEstadoTitulo.estadoTituloId,");
		// danny
		hql.append(" dt.tmEstadoTitulo.mensaje,");
		//
		hql.append(" dt.tmEstadoTitulo.estado ) ");

		hql.append(" FROM Persona p, ");
		hql.append(" PeJuri pj, ");
		hql.append(" TmInstSir tis , ");
		hql.append(" Titulo t, ");
		hql.append(" Presentante pre, ");
		hql.append(" DetalleTitulo dt, ");
		hql.append(" TmAreaRegistral tar ");

		hql.append(" WHERE");

		hql.append(" tis.peJuri= pj.peJuriId");
		hql.append(" AND pre.id.presOficRegId= tis.id.oficRegId");
		hql.append(" AND pre.id.presRegPubId= tis.id.regPubId");
		hql.append(" AND t.presOficRegId= pre.id.presOficRegId");
		hql.append(" AND t.presRegPubId= pre.id.presRegPubId");

		hql.append(" AND t.aaHojaPres= pre.id.aaHojaPres");
		hql.append(" AND t.numHojaPres= pre.id.numHojaPres");
		hql.append(" AND dt.id.refnumTitu= t.refnumTitu");

		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND tar.areaRegId= t.tmAreaRegistral.areaRegId");
		hql.append(" AND tar.estado='1'");
		hql.append(" AND p.tmDocIden.tipoDocId=:tipDoc ");
		hql.append(" AND p.numDocIden=:numDoc ");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("tipDoc", tipDoc);
		query.setParameter("numDoc", numDoc);
		query.setParameter("zona", zona);

		List<TituloPresentantePJBean> lista = query.list();

		return lista;
	}

	@Override
	public List<ParticipantePNBean> buscarParticipantePNXTitulo(String titulo,
			String ano, String zona, String oficina) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePNBean ( ");
		hql.append(" ipt.id.nsPersNatu , ");
		hql.append(" ipt.apePat , ");
		hql.append(" ipt.apeMat , ");
		hql.append(" ipt.nombres ) ");

		hql.append(" from Titulo t,IndPnParticTitu ipt ");
		hql.append(" where t.oficRegistral.id.regPubId= ipt.id.codReg ");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.codOficReg ");
		hql.append(" AND t.numTitu= ipt.id.nuTitu ");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu ");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId ");
		hql.append(" AND t.oficRegistral.id.oficRegId=:oficina ");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona ");
		hql.append(" AND t.numTitu=:titulo ");
		hql.append(" AND t.anoTitu=:ano ");
		//blanca
		
		
		
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", oficina);
		query.setParameter("zona", zona);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);
		
		

		List<ParticipantePNBean> lista = query.list();
		return lista;
	}

	@Override
	public List<ParticipantePJBean> buscarParticipantePJXTitulo(String titulo,
			String ano, String zona, String oficina) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePJBean( ");
		hql.append(" ipt.id.nsPersJuri, ");
		hql.append(" ipt.razSoc )");
		hql.append(" FROM Titulo t, IndPjParticTitu ipt ");
		hql.append(" WHERE t.oficRegistral.id.regPubId= ipt.id.regPubId");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.oficRegId");
		hql.append(" AND t.numTitu= ipt.id.nuTitu");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId");
		hql.append(" AND t.oficRegistral.id.oficRegId=:oficina");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona");
		hql.append(" AND t.numTitu=:titulo");
		hql.append(" AND t.anoTitu=:ano");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", oficina);
		query.setParameter("zona", zona);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);

		List<ParticipantePJBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<TituloParticipantePNBean> buscarParticipantePN(String apePat,
			String apeMat, String nombres, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePNBean( ");

		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu ,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.id.regPubId ,");

		hql.append(" t.oficRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		// @:blanca
		hql.append(" t.tmAreaRegistral.areaRegId,");
		//
		hql.append(" t.tmAreaRegistral.nombre,");

		hql.append(" t.refnumTitu,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");

		// danny:inciio
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		// fin

		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		hql.append(" tet.estado,");
		hql.append(" tet.mensaje,");
		hql.append(" p.curPres,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" ipt.nombres,");
		hql.append(" ipt.apeMat,");
		hql.append(" ipt.apePat, ");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM ");
		hql.append(" Presentante p LEFT JOIN p.tmInstSir tis ,");
		hql.append(" IndPnParticTitu ipt,");
		hql.append(" Titulo t, ");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmAreaRegistral tar,");
		hql.append(" TmEstadoTitulo tet");

		hql.append(" WHERE");
		hql.append(" ipt.id.codReg= t.oficRegistral.id.regPubId");
		hql.append(" AND ipt.id.codOficReg= t.oficRegistral.id.oficRegId");
		hql.append(" AND ipt.id.aaTitu= t.anoTitu");
		hql.append(" AND ipt.id.nuTitu= t.numTitu");
		hql.append(" AND ipt.id.sistemaId= t.sistemaId");
		hql.append(" AND t.refnumTitu= dt.id.refnumTitu");
		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND dt.tmEstadoTitulo.estadoTituloId= tet.estadoTituloId");
		hql.append(" AND t.tmAreaRegistral.areaRegId= tar.areaRegId");
		hql.append(" AND t.presOficRegId= p.id.presOficRegId ");
		hql.append(" AND t.presRegPubId= p.id.presRegPubId");
		hql.append(" AND t.numHojaPres= p.id.numHojaPres");
		hql.append(" AND t.aaHojaPres= p.id.aaHojaPres ");

		hql.append(" AND ipt.apePat like :apellidoPat ");
		// hql.append(" AND ipt.apeMat like :apellidoMat ");
		hql.append(" AND ipt.nombres like :nombres ");
		hql.append(" AND t.oficRegistral.id.regPubId =:zona ");
		/*
		 * hql.append(" AND ipt.apePat like 'ARIAS%' ");
		 * hql.append(" AND ipt.apeMat like 'VEGA%' ");
		 * hql.append(" AND ipt.nombres like 'MA%' ");
		 * hql.append(" AND t.oficRegistral.id.regPubId ='01' ");
		 */
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		apePat = apePat.trim() + '%';
		// apeMat = apeMat.trim() + '%';
		nombres = nombres.trim() + '%';

		query.setParameter("apellidoPat", apePat);
		// query.setParameter("apellidoMat", apeMat);
		query.setParameter("nombres", nombres);
		query.setParameter("zona", zona);

		List<TituloParticipantePNBean> lista = query.list();
		return lista;
	}

	@Override
	public List<TituloParticipantePNBean> buscarParticipanteDocPN(
			String tipDoc, String numDoc, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePNBean( ");

		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu ,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.id.regPubId ,");

		hql.append(" t.oficRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		// @:blanca
		hql.append(" t.tmAreaRegistral.areaRegId,");
		//
		hql.append(" t.tmAreaRegistral.nombre,");

		hql.append(" t.refnumTitu,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");

		// danny:inciio
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		// fin
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//
		hql.append(" tet.estado,");
		hql.append(" tet.mensaje,");
		hql.append(" p.curPres,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" ipt.nombres,");
		hql.append(" ipt.apeMat,");
		hql.append(" ipt.apePat, ");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM ");
		hql.append(" Presentante p LEFT JOIN p.tmInstSir tis ,");
		hql.append(" IndPnParticTitu ipt,");
		hql.append(" Titulo t, ");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmAreaRegistral tar,");
		hql.append(" TmEstadoTitulo tet");

		hql.append(" WHERE");
		hql.append(" ipt.id.codReg= t.oficRegistral.id.regPubId");
		hql.append(" AND ipt.id.codOficReg= t.oficRegistral.id.oficRegId");
		hql.append(" AND ipt.id.aaTitu= t.anoTitu");
		hql.append(" AND ipt.id.nuTitu= t.numTitu");
		hql.append(" AND ipt.id.sistemaId= t.sistemaId");
		hql.append(" AND t.refnumTitu= dt.id.refnumTitu");
		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND dt.tmEstadoTitulo.estadoTituloId= tet.estadoTituloId");
		hql.append(" AND t.tmAreaRegistral.areaRegId= tar.areaRegId");
		hql.append(" AND t.presOficRegId= p.id.presOficRegId ");
		hql.append(" AND t.presRegPubId= p.id.presRegPubId");
		hql.append(" AND t.numHojaPres= p.id.numHojaPres");
		hql.append(" AND t.aaHojaPres= p.id.aaHojaPres ");
		hql.append(" AND ipt.tiDocIden=:tipoDoc");
		hql.append(" AND ipt.nuDocIden=:numeroDoc ");
		hql.append(" AND t.oficRegistral.id.regPubId =:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("tipoDoc", tipDoc);
		query.setParameter("numeroDoc", numDoc);
		query.setParameter("zona", zona);

		List<TituloParticipantePNBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<TituloParticipantePJBean> buscarParticipanteRzPJ(
			String razonSocial, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePJBean( ");

		hql.append(" tar.areaRegId,");
		hql.append(" tar.nombre,");
		hql.append(" tar.estado,");
		/*
		 * hql.append(" ipj.id.nuTitu,"); hql.append(" ipj.id.aaTitu,");
		 */
		hql.append(" ipj.id.nsAfec,");
		hql.append(" ipj.id.nsPersJuri,");
		hql.append(" ipj.siglas,");
		hql.append(" ipj.razSoc,");
		hql.append(" ipj.tiDocIden,");
		hql.append(" ipj.nuDocIden,");
		hql.append(" ipj.cur,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.id.regPubId ,");
		hql.append(" t.oficRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		hql.append(" t.oficRegistral.regisPublico.siglas,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");

		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" tet.estado,");
		hql.append(" tet.mensaje,");
		hql.append(" p.curPres,");
		hql.append(" p.tipoPer,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");

		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		// hql.append(" p.nombreInst )");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM ");
		hql.append(" Presentante p LEFT JOIN p.tmInstSir tis ,");
		hql.append(" Titulo t,");
		hql.append(" IndPjParticTitu ipj,");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmAreaRegistral tar,");
		hql.append(" TmEstadoTitulo tet ");
		// --TmInstSir tis
		hql.append(" WHERE");
		hql.append(" ipj.id.regPubId=t.oficRegistral.id.regPubId");
		hql.append(" AND ipj.id.oficRegId=t.oficRegistral.id.oficRegId");
		hql.append(" AND ipj.id.aaTitu=t.anoTitu ");
		hql.append(" AND ipj.id.nuTitu=t.numTitu");
		hql.append(" AND ipj.id.sistemaId=t.sistemaId");
		hql.append(" AND t.presOficRegId=p.id.presOficRegId");
		hql.append(" AND t.presRegPubId=p.id.presRegPubId");
		hql.append(" AND t.aaHojaPres=p.id.aaHojaPres");
		hql.append(" AND t.numHojaPres=p.id.numHojaPres");
		hql.append(" AND dt.id.refnumTitu=t.refnumTitu");
		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND dt.tmEstadoTitulo.estadoTituloId=tet.estadoTituloId");
		hql.append(" AND t.tmAreaRegistral.areaRegId=tar.areaRegId ");

		hql.append(" AND ipj.razSoc like :razonSocial ");
		hql.append(" AND t.oficRegistral.id.regPubId =:zona ");

		/*
		 * hql.append(" AND ipj.razSoc like 'AGRASA S.A.%'");
		 * hql.append(" AND t.oficRegistral.id.regPubId ='09'");
		 */

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		razonSocial = razonSocial.trim() + '%';

		query.setParameter("razonSocial", razonSocial);
		query.setParameter("zona", zona);

		List<TituloParticipantePJBean> lista = query.list();
		return lista;
	}

	@Override
	public List<TituloParticipantePJBean> buscarParticipanteSgPJ(String siglas,
			String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePJBean( ");
		hql.append(" tar.areaRegId,");
		hql.append(" tar.nombre,");
		hql.append(" tar.estado,");
		hql.append(" ipj.id.nsAfec,");
		hql.append(" ipj.id.nsPersJuri,");
		hql.append(" ipj.siglas,");
		hql.append(" ipj.razSoc,");
		hql.append(" ipj.tiDocIden,");
		hql.append(" ipj.nuDocIden,");
		hql.append(" ipj.cur,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.id.regPubId ,");
		hql.append(" t.oficRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		hql.append(" t.oficRegistral.regisPublico.siglas,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");

		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" tet.estado,");
		hql.append(" tet.mensaje,");
		hql.append(" p.curPres,");
		hql.append(" p.tipoPer,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");

		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		// hql.append(" p.nombreInst )");
		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM ");
		hql.append(" Presentante p LEFT JOIN p.tmInstSir tis ,");
		hql.append(" Titulo t,");
		hql.append(" IndPjParticTitu ipj,");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmAreaRegistral tar,");
		hql.append(" TmEstadoTitulo tet ");
		// --TmInstSir tis
		hql.append(" WHERE");
		hql.append(" ipj.id.regPubId=t.oficRegistral.id.regPubId");
		hql.append(" AND ipj.id.oficRegId=t.oficRegistral.id.oficRegId");
		hql.append(" AND ipj.id.aaTitu=t.anoTitu ");
		hql.append(" AND ipj.id.nuTitu=t.numTitu");
		hql.append(" AND ipj.id.sistemaId=t.sistemaId");
		hql.append(" AND t.presOficRegId=p.id.presOficRegId");
		hql.append(" AND t.presRegPubId=p.id.presRegPubId");
		hql.append(" AND t.aaHojaPres=p.id.aaHojaPres");
		hql.append(" AND t.numHojaPres=p.id.numHojaPres");
		hql.append(" AND dt.id.refnumTitu=t.refnumTitu");
		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND dt.tmEstadoTitulo.estadoTituloId=tet.estadoTituloId");
		hql.append(" AND t.tmAreaRegistral.areaRegId=tar.areaRegId ");

		hql.append(" AND ipj.siglas like :siglas ");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		siglas = siglas.trim() + '%';

		query.setParameter("siglas", siglas);
		query.setParameter("zona", zona);

		List<TituloParticipantePJBean> lista = query.list();
		return lista;
	}

	@Override
	public List<TituloParticipantePJBean> buscarParticipanteDocPJ(
			String tipDoc, String numDoc, String zona) {

		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.TituloParticipantePJBean( ");
		hql.append(" tar.areaRegId,");
		hql.append(" tar.nombre,");
		hql.append(" tar.estado,");
		hql.append(" ipj.id.nsAfec,");
		hql.append(" ipj.id.nsPersJuri,");
		hql.append(" ipj.siglas,");
		hql.append(" ipj.razSoc,");
		hql.append(" ipj.tiDocIden,");
		hql.append(" ipj.nuDocIden,");
		hql.append(" ipj.cur,");
		hql.append(" t.oficRegistral.id.oficRegId,");
		hql.append(" t.oficRegistral.id.regPubId ,");
		hql.append(" t.oficRegistral.nombre,");
		hql.append(" t.oficRegistral.regisPublico.nombre,");
		hql.append(" t.oficRegistral.regisPublico.siglas,");
		hql.append(" t.tsPresent,");
		hql.append(" t.fecVenc,");

		hql.append(" t.refnumTitu,");
		hql.append(" t.numTitu,");
		hql.append(" t.anoTitu,");
		hql.append(" tet.estadoTituloId,");
		hql.append(" tet.estado,");
		hql.append(" tet.mensaje,");
		hql.append(" p.curPres,");
		hql.append(" p.tipoPer,");
		hql.append(" p.apePat,");
		hql.append(" p.apeMat,");
		hql.append(" p.nombres,");
		hql.append(" p.tiDocu,");
		hql.append(" p.nuDoc,");
		// @blanka
		hql.append(" dt.puCtrl,");
		hql.append(" dt.esTituCali, ");
		//

		hql.append(" tis.nombreInst ) ");

		hql.append(" FROM ");
		hql.append(" Presentante p LEFT JOIN p.tmInstSir tis ,");
		hql.append(" Titulo t,");
		hql.append(" IndPjParticTitu ipj,");
		hql.append(" DetalleTitulo dt,");
		hql.append(" TmAreaRegistral tar,");
		hql.append(" TmEstadoTitulo tet ");
		hql.append(" WHERE");
		hql.append(" ipj.id.regPubId=t.oficRegistral.id.regPubId");
		hql.append(" AND ipj.id.oficRegId=t.oficRegistral.id.oficRegId");
		hql.append(" AND ipj.id.aaTitu=t.anoTitu ");
		hql.append(" AND ipj.id.nuTitu=t.numTitu");
		hql.append(" AND ipj.id.sistemaId=t.sistemaId");
		hql.append(" AND t.presOficRegId=p.id.presOficRegId");
		hql.append(" AND t.presRegPubId=p.id.presRegPubId");
		hql.append(" AND t.aaHojaPres=p.id.aaHojaPres");
		hql.append(" AND t.numHojaPres=p.id.numHojaPres");
		hql.append(" AND dt.id.refnumTitu=t.refnumTitu");
		hql.append(" AND dt.fgActivo='1'");
		hql.append(" AND dt.tmEstadoTitulo.estadoTituloId=tet.estadoTituloId");
		hql.append(" AND t.tmAreaRegistral.areaRegId=tar.areaRegId ");
		hql.append(" AND ipj.id.tiDocIden =:tipoDoc ");
		hql.append(" AND ipj.id.nuDocIden =:numeroDoc ");
		hql.append(" AND t.oficRegistral.id.regPubId =:zona ");

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("tipoDoc", tipDoc);
		query.setParameter("numeroDoc", numDoc);
		query.setParameter("zona", zona);
		List<TituloParticipantePJBean> lista = query.list();
		return lista;
	}
 
	//EUCLIDES NUEVO CASO DE USO CONSULTA LIBRE
	
	@Override
	public long countmaxDetalle(long refTitu) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		String s ="";
		hql.append(" select count(dt.id.nsDetalle) from DetalleTitulo dt where dt.fgActivo='0' and dt.id.refnumTitu=:refTitu");
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("refTitu", refTitu);
		s = query.uniqueResult().toString();		
        int l = Integer.parseInt(s);
        log.trace("valor de s:" + l);
		return l;
	}
	
	@Override
	public long maxDetalle(long refTitu) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		String s ="";
		hql.append(" select max(dt.id.nsDetalle)  from DetalleTitulo dt where dt.fgActivo='0' and dt.id.refnumTitu=:refTitu");
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("refTitu", refTitu);
		s = query.uniqueResult().toString();
	    log.trace("valor de s:" + s);
        long l = Long.parseLong(s);
		return l;
	}
	
	@Override
	public List<PartidasBean> buscarPartidaXtitulo_Mensaje(String ptitulo,
			String pano,

			String pzona, String poficina, String pcodarea) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		hql.append(" SELECT DISTINCT");
		hql.append(" NEW pe.gob.sunarp.publicidad.beanconsulta.PartidasBean( ");
		hql.append(" p.numPartida ) ");
		hql.append(" FROM Partida p, Asiento a ");
		hql.append(" where p.refnumPart= a.partida.refnumPart ");
		hql.append(" and p.oficRegistral.id.oficRegId=:oficina ");
		hql.append(" and p.oficRegistral.id.regPubId=:zona ");
		hql.append(" and a.numTitu=:titulo ");
		hql.append(" and a.aaTitu=:ano ");
		hql.append(" and p.tmAreaRegistral.areaRegId=:area ");
		String rhql = hql.toString();

		Query query = session.createQuery(rhql);
		query.setParameter("oficina", poficina);
		query.setParameter("zona", pzona);
		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		query.setParameter("area", pcodarea);

		List<PartidasBean> lista = query.list();
		return lista;
	}
	
	@Override
	public String buscarRazSocReservada(long refnum) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		hql.append("SELECT  rs.razSocRes FROM  ReservaRzSoc rs  WHERE rs.refnumTitu=:refnum ");
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("refnum", refnum);
		String rs = query.uniqueResult().toString();
		return rs;
	}
	
	@Override
	public List<ParticipantePNBean> buscarParticipantePNXTitulo(String titulo,
			String ano, String zona, String oficina, String area) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePNBean ( ");
		hql.append(" ipt.id.nsPersNatu , ");
		hql.append(" ipt.apePat , ");
		hql.append(" ipt.apeMat , ");
		hql.append(" ipt.nombres ) ");

		hql.append(" from Titulo t,IndPnParticTitu ipt ");
		hql.append(" where t.oficRegistral.id.regPubId= ipt.id.codReg ");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.codOficReg ");
		hql.append(" AND t.numTitu= ipt.id.nuTitu ");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu ");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId ");
		hql.append(" AND t.oficRegistral.id.oficRegId=:oficina ");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona ");
		hql.append(" AND t.numTitu=:titulo ");
		hql.append(" AND t.anoTitu=:ano ");
		hql.append(" AND t.tmAreaRegistral.areaRegId=:area");
		//
		// hql.append(" AND ipt.areaRegId=:area");
		// /////////////////////
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", oficina);
		query.setParameter("zona", zona);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);
		query.setParameter("area", area);
		List<ParticipantePNBean> lista = query.list();
		return lista;
	}

	@Override
	public List<ParticipantePNBean> buscarParticipantePNXTituloRMC(
			String titulo, String ano, String area) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePNBean ( ");
		hql.append(" ipt.id.nsPersNatu , ");
		hql.append(" ipt.apePat , ");
		hql.append(" ipt.apeMat , ");
		hql.append(" ipt.nombres ) ");
		hql.append(" from Titulo t,IndPnParticTitu ipt ");
		hql.append(" where t.oficRegistral.id.regPubId= ipt.id.codReg ");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.codOficReg ");
		hql.append(" AND t.numTitu= ipt.id.nuTitu ");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu ");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId ");
		hql.append(" AND t.numTitu=:titulo ");
		hql.append(" AND t.anoTitu=:ano ");
		hql.append(" AND t.tmAreaRegistral.areaRegId=:area");
		//
		// hql.append(" AND ipt.areaRegId=:area");
		// /////////////////////
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);
		query.setParameter("area", area);

		List<ParticipantePNBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<ParticipantePJBean> buscarParticipantePJXTituloRMC(
			String titulo, String ano, String area) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePJBean( ");
		hql.append(" ipt.id.nsPersJuri, ");
		hql.append(" ipt.razSoc )");
		hql.append(" FROM Titulo t, IndPjParticTitu ipt ");
		hql.append(" WHERE t.oficRegistral.id.regPubId= ipt.id.regPubId");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.oficRegId");
		hql.append(" AND t.numTitu= ipt.id.nuTitu");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId");
		hql.append(" AND t.numTitu=:titulo");
		hql.append(" AND t.anoTitu=:ano");
		hql.append(" AND t.tmAreaRegistral.areaRegId=:area");
		//
		// hql.append(" AND ipt.areaRegId=:area");
		// /////////////////////
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);
		query.setParameter("area", area);

		List<ParticipantePJBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<ParticipantePJBean> buscarParticipantePJXTitulo(String titulo,
			String ano, String zona, String oficina, String area) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();

		hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.ParticipantePJBean( ");
		hql.append(" ipt.id.nsPersJuri, ");
		hql.append(" ipt.razSoc )");
		hql.append(" FROM Titulo t, IndPjParticTitu ipt ");
		hql.append(" WHERE t.oficRegistral.id.regPubId= ipt.id.regPubId");
		hql.append(" AND t.oficRegistral.id.oficRegId= ipt.id.oficRegId");
		hql.append(" AND t.numTitu= ipt.id.nuTitu");
		hql.append(" AND t.anoTitu= ipt.id.aaTitu");
		hql.append(" AND t.sistemaId= ipt.id.sistemaId");
		hql.append(" AND t.oficRegistral.id.oficRegId=:oficina");
		hql.append(" AND t.oficRegistral.id.regPubId=:zona");
		hql.append(" AND t.numTitu=:titulo");
		hql.append(" AND t.anoTitu=:ano");
		//
		hql.append(" AND t.tmAreaRegistral.areaRegId=:area");
		//
		// hql.append(" AND ipt.areaRegId=:area");
		// /////////////////////
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("oficina", oficina);
		query.setParameter("zona", zona);
		query.setParameter("titulo", titulo);
		query.setParameter("ano", ano);
		query.setParameter("area", area);
		List<ParticipantePJBean> lista = query.list();
		return lista;
	}

	@Override
	public List<OficinaRegistralBean> listaOficinaReg() {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();		
		hql.append("SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.OficinaRegistralBean( ");
		hql.append("  o.id.regPubId,o.id.oficRegId, o.nombre) from OficRegistral o order by o.nombre ");
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		List<OficinaRegistralBean> lista = query.list();
		return lista;		
	}

	@Override
	public List<DetalleBusquedaTituloBean> buscarDetalleTitulo_Libre(String ptitulo,
			String pano, String pzona, String poficina) {

		Session session = sessionFactory.getCurrentSession();

		StringBuilder hql = new StringBuilder();
		hql.append("  SELECT DISTINCT  NEW pe.gob.sunarp.publicidad.beanconsulta.DetalleBusquedaTituloBean( ");
		hql.append("  dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append("  dt.puCtrl,");
		hql.append("  dt.esTituCali, ");
		hql.append("  dt.montoLiq, ");
		hql.append("  t.numTitu,");
		hql.append("  t.anoTitu, ");
		hql.append("  t.refnumTitu, ");
		hql.append("  t.fecVenc, ");
		hql.append("  t.tsPresent, ");
		hql.append("  t.tsUltSync,");
		hql.append("  t.oficRegistral.id.regPubId, ");
		hql.append("  t.oficRegistral.id.oficRegId, ");
		hql.append("  t.oficRegistral.nombre, ");
		hql.append("  t.oficRegistral.regisPublico.nombre, ");
		hql.append("  p.apePat, ");
		hql.append("  p.apeMat, ");
		hql.append("  p.nombres, ");
		hql.append("  p.tiDocu, ");
		hql.append("  p.nuDoc, ");
		hql.append("  p.curPres, ");
		hql.append("  p.tipoPer, ");
		hql.append("  p.nombreInst, ");
		hql.append("  tet.estado, ");
		hql.append("  tet.mensaje, ");
		hql.append("  tar.nombre, ");
		hql.append("  tar.areaRegId,");
		hql.append("  ta.descripcion, ");
		hql.append("  tis.nombreInst ) ");
		hql.append("  FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis LEFT join t.actosTitulos at  LEFT join at.tmActo ta , DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append("  WHERE ");
		hql.append("  dt.id.refnumTitu= t.refnumTitu ");
		hql.append("  AND dt.fgActivo='1' ");
		hql.append("  AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId");
		hql.append("  AND tar.estado='1' ");
		hql.append("  AND tar.areaRegId= t.tmAreaRegistral.areaRegId");
		hql.append("  AND t.numTitu=:titulo ");
		hql.append("  AND t.anoTitu=:ano ");
		hql.append("  AND t.oficRegistral.id.regPubId=:zona ");
		hql.append("  AND t.oficRegistral.id.oficRegId=:oficina ");	

		String rhql = hql.toString();
		Query query = session.createQuery(rhql);

		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		query.setParameter("zona", pzona);
		query.setParameter("oficina", poficina);
		List<DetalleBusquedaTituloBean> lista = query.list();
		return lista;
	}
	
	@Override
	public List<DetalleBusquedaTituloBean> buscarDetalleTitulo_LibreRMC(
			String ptitulo, String pano) {
		Session session = sessionFactory.getCurrentSession();
		StringBuilder hql = new StringBuilder();
		hql.append("  SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.DetalleBusquedaTituloBean( ");
		hql.append("  dt.tmEstadoTitulo.estadoTituloId, ");
		hql.append("  dt.puCtrl,");
		hql.append("  dt.esTituCali, ");
		hql.append("  dt.montoLiq, ");
		hql.append("  t.numTitu,");
		hql.append("  t.anoTitu, ");
		hql.append("  t.refnumTitu, ");
		hql.append("  t.fecVenc, ");
		hql.append("  t.tsPresent, ");
		hql.append("  t.tsUltSync,");
		hql.append("  t.oficRegistral.id.regPubId, ");
		hql.append("  t.oficRegistral.id.oficRegId, ");
		hql.append("  t.oficRegistral.nombre, ");
		hql.append("  t.oficRegistral.regisPublico.nombre, ");
		hql.append("  p.apePat, ");
		hql.append("  p.apeMat, ");
		hql.append("  p.nombres, ");
		hql.append("  p.tiDocu, ");
		hql.append("  p.nuDoc, ");
		hql.append("  p.curPres, ");
		hql.append("  p.tipoPer, ");
		hql.append("  p.nombreInst, ");
		hql.append("  tet.estado, ");
		hql.append("  tet.mensaje, ");
		hql.append("  tar.nombre, ");
		hql.append("  tar.areaRegId,");
		hql.append("  ta.descripcion, ");
		hql.append("  tis.nombreInst ) ");
		hql.append("  FROM Titulo t LEFT JOIN t.presentantes p LEFT JOIN p.tmInstSir tis LEFT join t.actosTitulos at  LEFT join at.tmActo ta , DetalleTitulo dt, TmEstadoTitulo tet, TmAreaRegistral  tar ");
		hql.append("  WHERE ");
		hql.append("  dt.id.refnumTitu= t.refnumTitu ");
		hql.append("  AND dt.fgActivo='1' ");
		hql.append("  AND tet.estadoTituloId= dt.tmEstadoTitulo.estadoTituloId");
		hql.append("  AND tar.estado='1' ");
		hql.append("  AND tar.areaRegId= t.tmAreaRegistral.areaRegId");
		hql.append("  AND t.numTitu=:titulo ");
		hql.append("  AND t.anoTitu=:ano ");
		String rhql = hql.toString();
		Query query = session.createQuery(rhql);
		query.setParameter("titulo", ptitulo);
		query.setParameter("ano", pano);
		List<DetalleBusquedaTituloBean> lista = query.list();
		return lista;
	}	
	//FIN DE EUCLIDES

	//SOLICITUDES EUCLIDES
    
	@Override
	public List<SolicitudBean> buscarSolicitudes(long numeroSolicitud) {
			Session session = sessionFactory.getCurrentSession();
			StringBuilder hql = new StringBuilder();
			
			   hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.SolicitudBean( ");
			   hql.append(" a.solicitudId, "); 
			   hql.append(" a.estado, ");   
			   hql.append(" a.total,  "); 
			   hql.append(" b.mensajeRegistrador,  "); 
			   hql.append(" b.mensajeUsuario,   "); 
			   hql.append(" c.tpoPers, "); 
			   hql.append(" c.apePat, "); 
			   hql.append(" c.apeMat, "); 
			   hql.append(" c.nombres, "); 
			   hql.append(" c.razSoc, "); 
			   hql.append(" c.refnumPart, "); 			  
			   hql.append(" d.certificadoId, "); 
			   hql.append(" d.codGrupoLibroArea, ");  
			   hql.append(" d.tpoCertificado, ");
			   hql.append(" d.nombre, ");
			   hql.append(" m.numPartida, ");//Partida
			   hql.append(" n.nombre, ");//Area registral			  
			   /*hql.append(" d.AREA_REG_ID as AREA_REGISTRAL_ID, ");/*private TmAreaRegistral tmAreaRegistral;*/ 
			   hql.append(" e.tpoPers, "); 
			   hql.append(" e.apePat, "); 
			   hql.append(" e.apeMat, "); 
			   hql.append(" e.nombres, "); 
			   hql.append(" e.razSoc,  "); 
			   hql.append(" e.numDocIden, "); 
			   hql.append(" f.descripcion, "); 
			   hql.append(" g.tpoEnv, "); 
			   hql.append(" g.tpoPers, "); 
			   hql.append(" g.apePat, "); 
			   hql.append(" g.apeMat, "); 
			   hql.append(" g.nombres, "); 
			   hql.append(" g.distrito, "); 
			   hql.append(" g.direcc, "); 
			   hql.append(" g.codPost, "); 
			   hql.append(" g.razSoc, "); 
			   hql.append(" h1.nombre, "); 
			   hql.append(" h2.nombre,  "); 
			   hql.append(" i.nombre, "); 
			   hql.append(" j.nombre,    "); 
			   hql.append(" k.nombre, "); 
			   hql.append(" l.tpoPago, "); 
			   hql.append(" l.tsModi, "); 
			   hql.append(" l.tsCrea)");    
			   hql.append(" FROM Solicitud a LEFT join a.pagoSolicituds l, TmEstadoSolicitud b, ObjetoSolicitud c LEFT join c.partida m LEFT join m.tmAreaRegistral n , TmCertificado d, Solicitante e, TmDocIden f, OficRegistral h1, OficRegistral h2, Destinatario g LEFT join g.tmPai i LEFT join g.tmDepartamento j LEFT join g.tmProvincia k"); 
			   hql.append(" WHERE  "); 
			   hql.append("  b.estadoSolicitud = a.estado "); 
			        hql.append(" AND d.certificadoId  = c.tmCertificado.certificadoId  "); 
				    hql.append(" AND f.tipoDocId = e.tmDocIden.tipoDocId  "); 
					hql.append(" AND h2.id.regPubId  = c.oficRegistral.id.regPubId  "); 
					hql.append(" AND h2.id.oficRegId  = c.oficRegistral.id.oficRegId  "); 
					/*hql.append(" AND i.paisId(+) = g.paisId  "); /*LEFT destinatario -pais*/
					//hql.append(" AND j.id.dptoId(+) = g.dptoId  "); /*LEFT destinatario -pais*/
					//hql.append(" AND j.paisId(+) = g.paisId  "); /*LEFT destinatario -pais*/
					//hql.append(" AND k.paisId(+) = g.paisId  "); /*LEFT destinatario -pais*/
					//hql.append(" AND k.id.dptoId(+) = g.dptoId  "); /*LEFT destinatario -pais*/
					//hql.append(" AND k.id.provId(+) = g.provId "); /*LEFT destinatario -pais*/
					hql.append(" AND h1.id.regPubId  = g.regPubId "); /*No estan relacionadas*/ 
					hql.append(" AND h1.id.oficRegId = g.oficRegId "); /*No estan relacionadas*/ 
					//hql.append(" AND l.SOLICITUD_ID(+) = a.SOLICITUD_ID  "); /*estan relacionadas*/
					hql.append(" AND g.solicitud.solicitudId = a.solicitudId"); 
					hql.append(" AND e.solicitud.solicitudId = a.solicitudId"); 
					hql.append(" AND c.solicitud.solicitudId = a.solicitudId"); 
			        hql.append(" AND a.estado<> ' ' "); 
					hql.append(" AND a.solicitudId =:numSolicitud "); 
					
					String rhql = hql.toString();
					Query query = session.createQuery(rhql);
					query.setParameter("numSolicitud", numeroSolicitud);				
					List<SolicitudBean> lista = query.list();
			return lista;
	}
	/**
	 * @Override
	public List<SolicitudBean> buscarSolicitudes(long numeroSolicitud) {
			Session session = sessionFactory.getCurrentSession();
			StringBuilder hql = new StringBuilder();
			
			   hql.append(" SELECT NEW pe.gob.sunarp.publicidad.beanconsulta.SolicitudBean( ");
			   hql.append(" a.solicitudId, "); 
			   hql.append(" a.estado, ");   
			   hql.append(" a.total,  "); 
			   hql.append(" b.mensajeRegistrador,  "); 
			   hql.append(" b.mensajeUsuario,   "); 
			   hql.append(" c.tpoPers, "); 
			   hql.append(" c.apePat, "); 
			   hql.append(" c.apeMat, "); 
			   hql.append(" c.nombres, "); 
			   hql.append(" c.razSoc, "); 
			   hql.append(" c.refnumPart, "); 
			   hql.append(" c.nsAsiento, "); 
			   hql.append(" c.codActo, "); 
			   hql.append(" c.tipDocumento,"); 
			   hql.append(" c.numDocumento,  "); 
			   hql.append(" c.numPlaca, "); 
			   hql.append(" c.nombreBien, "); 
			   hql.append(" c.numMatricula, "); 
			   hql.append(" c.tipInfDominio, "); 
			   hql.append(" c.numPartida , "); 
			   hql.append(" c.numSerie, ");  
			   hql.append(" c.siglas, "); 
			   hql.append(" c.critBusq, "); 
			   hql.append(" c.urlBusq,  "); 
			   hql.append(" c.tipRegistro, "); 
			   hql.append(" c.tipParticipante,"); 
			   hql.append(" c.flagHistorico, "); 
			   hql.append(" c.fecInsAsientoDesde,"); 
			   hql.append(" c.fecInsAsientoHasta,"); 
			   hql.append(" c.flagAceptaCondicion, "); 
			   hql.append(" c.flagEnvioDomicilio, "); 
			   hql.append(" d.certificadoId, "); 
			   hql.append(" d.codGrupoLibroArea, ");  
			   hql.append(" d.tpoCertificado, "); 
			   hql.append(" d.nombre, "); 
			   /*hql.append(" d.AREA_REG_ID as AREA_REGISTRAL_ID, ");/*private TmAreaRegistral tmAreaRegistral; 
			   hql.append(" e.tpoPers, "); 
			   hql.append(" e.apePat, "); 
			   hql.append(" e.apeMat, "); 
			   hql.append(" e.nombres, "); 
			   hql.append(" e.razSoc,  "); 
			   hql.append(" e.numDocIden, "); 
			   hql.append(" f.descripcion, "); 
			   hql.append(" g.tpoEnv, "); 
			   hql.append(" g.tpoPers, "); 
			   hql.append(" g.apePat, "); 
			   hql.append(" g.apeMat, "); 
			   hql.append(" g.nombres, "); 
			   hql.append(" g.distrito, "); 
			   hql.append(" g.direcc, "); 
			   hql.append(" g.codPost, "); 
			   hql.append(" g.razSoc, "); 
			   hql.append(" h1.nombre, "); 
			   hql.append(" h2.nombre,  "); 
			   hql.append(" i.nombre, "); 
			   hql.append(" j.nombre,    "); 
			   hql.append(" k.nombre, "); 
			   hql.append(" l.tpoPago, "); 
			   hql.append(" l.tsModi, "); 
			   hql.append(" l.tsCrea)");    
			   hql.append(" FROM Solicitud a LEFT join a.pagoSolicituds l, TmEstadoSolicitud b, ObjetoSolicitud c, TmCertificado d, Solicitante e, TmDocIden f, OficRegistral h1, OficRegistral h2, Destinatario g LEFT join g.tmPai i LEFT join g.tmDepartamento j LEFT join g.tmProvincia k "); 
			   hql.append(" WHERE  "); 
			   hql.append("  b.estadoSolicitud = a.estado "); 
			        hql.append(" AND d.certificadoId  = c.tmCertificado.certificadoId  "); 
				    hql.append(" AND f.tipoDocId = e.tmDocIden.tipoDocId  "); 
					hql.append(" AND h2.id.regPubId  = c.oficRegistral.id.regPubId  "); 
					hql.append(" AND h2.id.oficRegId  = c.oficRegistral.id.oficRegId  "); 
					
					String rhql = hql.toString();
					Query query = session.createQuery(rhql);
					query.setParameter("numSolicitud", numeroSolicitud);				
					List<SolicitudBean> lista = query.list();
			return lista;
	}
	 */
	/*FIN DE SOLICITUDES*/
	
}
